/********************************************************************************
TITLE:                      	Using Virtual Functions
FILENAME:                   	media.h
PREPARED FOR:               	CS215 Section CS13-02
PROGRAMMER(S):              	Eric (Fox) Crowell, Timothy Drye
DEVELOPMENT DATE:           	< 12/15/13 >
COMPILER USED:      			Microsoft Visual Studio Professional 2013
- Version 12.0.21005.1 REL
TARGET PLATFORM:         	    Windows 8 x64
================================================================================
REVISION HISTORY

DATE         PROGRAMMER          DESCRIPTION OF CHANGES MADE
------------------------------------------------------------------------------
<12/15/13       Fox                 Class Created.                           >

*******************************************************************************/

#ifndef MEDIA_H
#define MEDIA_H

#include <iostream>

#include "time.h"

using namespace std;

class Media
{
public:
	Media();
	Media(const string  & InTitle, const string & InArtist, const string & InWherePurchased,
		float InCost, Time  & InRunningTime);
	string GetTitle() const;
	string GetArtist() const;
	string GetWherePurchased() const;
	float GetCost() const;
	Time GetRunningTime() const; // Returns
	virtual void Play() = 0;  // Can only play a media item if it is at its beginning
	virtual void FastForward() = 0; // Can only fast-forward a media item if it is at its beginning
	virtual void Rewind() = 0; // Can only rewind a media item (that supports rewind) if is not at its beginning
	virtual void PrintMedia(ostream & Out); // Prints media data members declared below to output stream
	virtual ~Media() { }	// virtual destructor so polymorphic-destruction works properly

protected:
	string Title; // Title of the media.
	string Artist; // Artist of the media.
	string WherePurchased; // Where the media was purchased (Gift, WalMart, BestBuy, Online, etc..)
	float Cost; // Cost of the media
	Time RunningTime; // Represents the total running time of the media (incuding all tracks, if there are any).
};

#endif